% ch1.tex
% This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 New Zealand License.
% To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/nz
% or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.


\chapter{No todas las serpientes muerden}\label{ch:notallsnakeswillsquishyou}

Existe la posibilidad de que te regalasen este libro en tu cumpleaños. O posiblemente en navidades. La tía Pili iba a regalarte unos calcetines que eran dos tallas más grandes que la tuya (que no querrías llevar ni cuando crecieras). En vez de eso, oyó a alguien hablar de este libro imprimible desde Internet, recordó que tenías uno de esos aparatos que se llaman ordenadores o algo así y que intentaste enseñarle a usarlo las últimas navidades (cosa que dejaste de hacer cuando viste que ella intentaba hablarle al ratón), y te imprimió una copia. Agradécele que no te regalase los viejos calcetines.

En vez de eso, espero que no te haya defraudado cuando salí del papel de envolver reciclado. Yo, un libro que no habla tanto como tu tía (de acuerdo, no hablo nada de nada), con un título que no augura nada bueno sobre ``Aprender$\ldots$''.
Sin embargo, entretente un rato pensando como me siento yo. Si fueras el personaje de esta novela sobre magos que está en la estantería de tu dormitorio, posiblemente yo tendría dientes... o incluso ojos. Dentro de mí tendría fotos con imágenes que se moverían, o sería capaz de hacer sonidos y quejidos fantasmales cuando abrieras mis páginas. En luga de eso, estoy impreso en páginas de tamaño folio, grapadas o tal vez aprisionadas en una carpeta. Como podría saberlo---Si no tengo ojos.
\\
\\
\emph{Daría cualquier cosa por una hermosa y afilada dentadura$\ldots$}
\\
\\
Si embargo no es tan malo como suena. Incluso aunque no pueda hablar... o morderte los dedos cuando no estás mirando... Puedo enseñarte un poquito sobre lo que hace que los ordenadores funcionen. No hablo de las piezas, con cables, conexiones, chips de ordenador y dispositivos que podrían, más que probablemente, electrocutarte en cuanto los tocaras (por eso ¡¡no los toques!!)---sino de todo aquello que por va dentro de esos cables, circuitos y chips, que es lo que hace que los ordenadores sean útiles.

\begin{wrapfigure}{r}{0.5\textwidth}
  \begin{center}
\includegraphics*[width=70mm]{electrocute.eps}
  \end{center}
\end{wrapfigure}

Es como esos pequeños pensamientos que andan dentro de tu cabeza. Si no tuvieras pensamientos estarías sentado en el suelo de tu dormitorio, con la mirada perdida hacia la puerta de tu habitación y babeando en la camiseta. Sin los \emph{programas}, los ordenadores solamente serían útiles para sujetar las puertas---e incluso para eso no serían muy útiles, porque tropezarías constantemente con ellos por la noche. Y no hay nada peor que darse un golpe en un dedo del pie en la oscuridad.
\\
\\
\emph{Solamente soy un libro, incluso yo sé eso}
\\
\\
Tu familia puede que tenga una Playstation, Xbox o Wii en la sala de estar---No son muy útiles sin programas (Juegos) para hacerlas funcionar. Tu reproductor de DVD, posiblemente tu frigorífico e incluso tu coche, todos contienen programas de ordenador para hacerlos más útiles de lo que serían sin ellos. Tu reproductor de DVD tiene programas que sirven para que pueda reproducir lo que hay en un DVD; tu frigorífico podría tener un programa simple que le asegura que no usa demasiada electricidad, pero sí la suficiente para mantener la comida fría; tu coche podría tener un ordenador con un programa para avisar al conductor que van a chocar contra algo.\\
Si supieras escribir programas de ordenador, podrías hacer toda clase de cosas útiles, Tal vez escribir tus propios juegos. Crear páginas web que hagan cosas, en lugar de estar ahí delante paradas con sus colorida apariencia. Ser capaz de programar te podría ayudar incluso con tus deberes.\\
\\
Dicho esto, vamos a hacer algo un poco más interesante.

\section{Unas pocas palabras sobre el lenguaje}

Como pasa con los humanos, con las ballenas, posiblemente con los delfines, y puede que incluso con los padres (aunque esto último se puede debatir), los ordenadores tienen su propio idioma o lenguaje. En realidad, también como con los humanos, tienen más de un idioma. Hay tantos lenguajes que casi se acaban las letras del alfabeto. A, B, C, D y E no son únicamente letras, también son nombres de lenguajes de programación (lo que prueba que los adultos no tienen imaginación, y que deberían leer un diccionario antes de darle nombre a nada).

Hay lenguajes de programación cuyo nombre viene de nombres de personas, otros cuyo nombre viene de acrónimos (las letras mayúsculas de una serie de palabras), y algunos pocos cuyo nombre proviene de algún espectáculo de televisión. Ah, y si le añades algunos simbolos más y hash (+, \#) después de un par de las letras que comenté antes---también hay un par de lenguajes de programación que se llamen así. Para complicar más las cosas, algunos de esos lenguajes son casi iguales, y sólo varían ligeramente.
\\
\\
\emph{¿Qué te dije? ¡Sin imaginación!}
\\
\\
Por fortuna, muchos de estos lenguajes ya no se usan mucho, o han desaparecido completamente; pero la lista de las diferentes formas de las que le puedes `hablar' al ordenador sigue siendo preocupantemente larga. Yo únicamente voy a comentar una de ellas---de otra manera posiblemente ni siquiera podríamos empezar.
\\
Sería mas productivo permanecer sentado en tu dormitorio babeando la camiseta$\ldots$

\section{La Orden de las Serpientes Constrictoras No Venenosas$\ldots$}

$\ldots$o Pitones, para abreviar.

Aparte de ser una serpiente, Python\index{Python} es también un lenguaje de programación. Sin embargo, el nombre no procede este reptil sin patas; en vez de eso es uno de los pocos lenguajes de programación cuyo nombre viene de un programa de televisión. Monty Python era un espectáculo de comedia Británica que fue popular en la década de los 70 (1970-1979), y que aún es popular hoy día, en realidad, para la que tienes que ser de una cierta edad para encontrarla entretenida. Cualquiera bajo una edad de unos $\ldots$ digamos 12$\ldots$ se sorprenderá de las pasiones que levanta esta comedia\footnote{Salvo por la danza de los golpes de pescado. Eso es divertido independientemente de la edad que tengas.}.

Hay algunas cosas sobre Python (el lenguaje de programación, no la serpiente, ni el espectáculo de televisión) que lo hacen extremadamente útil cuando estás aprendiendo a programar. Para nosotros, por el momento, la razón más importante es que puedes comenzar a hacer cosas realmente rápido.

Esta es la parte en la que espero que Mamá, Papá (o cualquiera que sea que esté a cargo del ordenador), hayan leído el comienzo de este libro que está etiquetado como ``Una Nota para los Padres:''

\noindent
Hay una buena manera de descubrir si realmente se la han leído:

\begin{WINDOWS}
Haz click en el botón de Inicio en la parte izquierda de la pantalla, pulsa en la opción `Todos los Programas' (que tiene un triángulo verde junto a ella), y, si todo va bien, en la lista de programas deberías ver `Python 2.5' o `Python 3.0' (o algo parecido). La Figura~\ref{fig1} te muestra lo que estás buscando. Pulsa en la opción `Python (línea de comando)' y deberías ver algo parecido a la Figura~\ref{fig2}.

\begin{figure}
\begin{center}
\includegraphics[width=80mm]{figure1.eps}
\end{center}
\caption{Python en el menú de opciones de Windows.}\label{fig1}
\end{figure}

\begin{figure}
\begin{center}
\includegraphics[width=135mm]{figure2.eps}
\end{center}
\caption{La consola de Python en Windows.}\label{fig2}
\end{figure}
\end{WINDOWS}

\begin{MAC}
En Finder, a la izquierda deberías ver un grupo denominado `Aplicaciones'. Pulsa en él, y busca un programa denominado `Terminal' (probablemente estará en una carpeta denominada `Utilidades').
Pulsa en `Terminal', y cuando se inicie, teclea python y pulsa Intro. Debería mostrarse una ventana como la de la Figura~\ref{fig3}.

\begin{figure}
\begin{center}
\includegraphics[width=85mm]{figure3.eps}
\end{center}
\caption{La consola de Python en el Mac OSX.}\label{fig3}
\end{figure}
\end{MAC}

\begin{LINUX}
Pregunta a Mamá o a Papá qué aplicación de terminales deberías usar (puede ser una llamada `Konsole', `rxvt', `xterm', o cualquier otra de la docena de diferentes programas---por eso es por lo que seguramente tendrás que preguntar). Inicia el terminal que te hayan indicado y teclea `python' (sin las comillas), y pulsa Intro. Deberías ver algo parecido a lo que se muestra en la Figura~\ref{fig4}.

\begin{figure}
\begin{center}
\includegraphics[width=80mm]{figure4.eps}
\end{center}
\caption{La consola de Python en Linux.}\label{fig4}
\end{figure}
\end{LINUX}

\subsection*{\color{BrickRed}Si descubrieras que no se han leido la sección del comienzo del libro$\ldots$}

$\ldots$porque falta algo cuando intentas seguir las instrucciones---entonces ve al comienzo del libro, y se lo pasas por delante de sus narices mientras estén intentando leer el periódico, y pon cara esperanzada. Diciendo, ``por favor por favor por favor por favor'' y así una y otra vez, hasta que resulte molesto, podría funcionar bastante bien, si tuvieras problemas en convencerles para que se levanten del sillón, puede probar otra cosa, ir al comienzo del libro y seguir las instrucciones en la Introducción para instalar Python tú mismo.

\section{Tu primer programa en Python}

Con algo de suerte, si has alcanzado este punto, has conseguido iniciar la consola de Python, que es una de las formas de ejecutar sentencias y programas. Al iniciar la consola (o después de ejecutar una sentencia), verás lo que se llama un `prompt'. En la consola de Python\index{consola de Python}, el prompt está formado por tres símbolos de `mayor que' ($>$) que forman una flecha apuntando a la derecha:

\begin{listing}
\begin{verbatim}
>>>
\end{verbatim}
\end{listing}

Si juntas suficientes sentencias de Python, tendrás un programa que podrás ejecutar más allá de la consola$\ldots$ pero por el momento vamos a hacer lo más simple, y teclear nuestras sentencias directamente en la consola, en el prompt ($>>>$).  Así que, por qué no comenzar tecleando lo siguiente:

\begin{listing}
\begin{verbatim}
print("Hola mundo")
\end{verbatim}
\end{listing}

Asegúrate que incluyes las comillas (eso es, estas comillas: $"$ $"$), y pulsa la tecla Intro al finalizar la línea. Si todo va bien verás en la pantalla algo como lo siguiente:

\begin{listing}
\begin{verbatim}
>>> print("Hola mundo")
Hola mundo
\end{verbatim}
\end{listing}

El prompt reaparece, con el fin de hacerte saber que la consola de Python está lista para aceptar más sentencias.

\noindent
¡Enhorabuena! Acabas de crear tu primer programa Python.  \code{print} es una función que se encarga de escribir en la consola todo lo que se encuentre dentro de los paréntesis--la utilizaremos repetidamente más adelante.

\section{Tu segundo programa en Python$\ldots$¿Otra vez lo mismo?}

Los programas en Python no serían nada útiles si tuvieras que teclear las sentencias cada vez que quisieras hacer algo---o si escribieras programas para alguien, y tuvieran que teclearlo cada vez antes de que pudieran usarlo. 
El Procesador de Textos que uses para escribir las tareas del cole, tiene probablemente entre 10 y 100 millones de líneas de código (sentencias). Dependiendo de cuantas líneas imprimieras en una página (y si las imprimes o no por ambas caras del papel), esto supondría alrededor de 400.000 páginas en papel$\ldots$ o una pila de papel de unos 40 metros de alto.
Imagínate cuando tuvieras que traer esta aplicación a casa desde la tienda, habría que hacer unos cuantos viajes con el coche, para llevar tantos papeles$\ldots$

$\ldots$y mejor que no sople el viento mientras transportas esas pilas de papel. Por fortuna, existe una alternativa a tener que teclearlo todo cada vez---o nadie podría hacer nada.

\begin{center}
\includegraphics*[width=85mm]{pullinghair.eps}
\end{center}

\begin{WINDOWS}
Abre el Block de Notas (Notepad) (Pulsa en el menú de Inicio, Todos los Programas: debería estar en el submenú de Accesorios), y teclea la sentencia print exactamente igual que lo hiciste antes en la consola:

\begin{listing}
\begin{verbatim}
print("Hola mundo")
\end{verbatim}
\end{listing}

Pulsa en el menú Archivo (en el Block de Notas), luego Guardar, y cuando te pregunte por qué nombre darle al fichero, llámalo \emph{hola.py} y grábalo en tu Escritorio. Haz doble click en el icono que aparece en el Escritorio con el nombre hola.py (ver Figura~\ref{fig5}) y durante un breve momento se mostrará una ventana con la consola. Desaparecerá demasiado rápido como para ver lo que pone, pero lo que se mostrará en pantalla en esas décimas de segundo será Hola mundo---volveremos a esto más tarde para comprobar que es verdad lo que digo.\\

\begin{figure}
\begin{center}
\includegraphics[width=58mm]{figure5.eps}
\end{center}
\caption{El icono hola.py en el Escritorio de Windows.}\label{fig5}
\end{figure}
\end{WINDOWS}

\begin{MAC}
Abre el Editor de Textos pulsando sobre su icono. Puede estar en el Dock de la parte de abajo de la pantalla \includegraphics*[width=12mm]{textedit-icon.eps}, o busca este icono \includegraphics*[width=19mm]{textedit-icon2.eps} en la lista de Aplicaciones en Finder.  Una vez abierto, teclea la sentencia print de la misma forma que hisciste antes en la consola:

\begin{listing}
\begin{verbatim}
print("Hola mundo")
\end{verbatim}
\end{listing}

Haz click en el menú de Archivo, luego pulsa Guardar, y cuando te pregunte por un nombre de fichero, llámalo hola.py y guárdalo en tu directorio home (el directorio home está a la izquierda bajo Lugares--pregunta a Mamá o a Papá para que te ayuden a encontrarlo).

Abre la aplicación `Terminal' de nuevo--se iniciará automáticamente en tu directorio home--y teclea lo siguiente:

\begin{listing}
\begin{verbatim}
python hola.py
\end{verbatim}
\end{listing}

Deberías ver Hola mundo escrito en la ventana exactamente como cuando tecleaste la sentencia en la consola de Python.

\end{MAC}

\begin{LINUX}
Abre un editor de texto (de nuevo tendrás que preguntar a Mamá o a Papá cual usar), luego teclea la sentencia print exactamente como la tecleaste en la consola:

\begin{listing}
\begin{verbatim}
print("Hola mundo")
\end{verbatim}
\end{listing}

Pulsa en el menú Archivo, luego Guardar, y cuando te pregunte por el nombre del fichero, llámalo hola.py y sálvalo en tu carpeta Home (puede que haya un icono llamado `Home' en algún lugar en el diálogo que aparece para Guardar). Luego abre la aplicación de terminal (de nuevo Konsole, rxvt, etc... la que usamos antes), y teclea:

\begin{listing}
\begin{verbatim}
python hola.py
\end{verbatim}
\end{listing}

Deberías ver Hola mundo escrito en la ventana exactamente como cuando tecleaste la sentencia en la consola de Python (ver Figura~\ref{fig9}).

\begin{figure}
\begin{center}
\includegraphics[width=75mm]{figure9.eps}
\end{center}
\caption{Ejecutando en Linux un programa python grabado en un fichero de texto.}\label{fig9}
\end{figure}
\end{LINUX}

Como ves la gente que creó Python era gente decente, te ha librado de tener que teclear lo mismo una y otra vez y otra vez y otra vez y otra vez. Como pasó en los años ochenta. No, lo digo en serio---lo hicieron. Ve y pregunta a tu Padre si alguna vez tuvo un ZX81 cuando era más joven\\

\noindent
Si lo tuvo puedes señalarle con el dedo y reirte.\\

\noindent
Créeme. No lo entenderás. Pero él sí.\footnote{El Sinclair ZX81, vendido en la década de 1980 fue uno de los primeros ordenadores para el hogar que se vendía a un precio asequible. Un gran número de jóvenes se volvieron `locos' tecleando el código de juegos que venían impresos en revistas sobre el ZX81---únicamente para descubrir, después de horas de teclear, que esos malditos juegos nunca funcionaban bien.}

\noindent
\emph{De todos modos, prepárate para salir corriendo.}

\subsection*{\color{BrickRed}El Final del Comienzo}

Bienvenido al maravilloso mundo de la Programación. Hemos empezado con una aplicación sencillita `Hola mundo'---todo el mundo comienza con eso, cuando empiezan a programar.
En el siguiente capítulo comenzaremos a hacer cosas más útiles con la consola de Python y empezaremos a ver lo que hace falta para hacer un programa.

\newpage
